﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Crosland.Offline.Core;
using Crosland.Offline.Logic;

namespace Crosland.Offline.WinForm
{
    public partial class LoginForm : Form
    {
        /// <summary>
        /// Instancia de Clase que maneja la logica
        /// </summary>
        SeguridadLogic logic = new SeguridadLogic();

        public LoginForm()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Evento para verificar los datos del usuario
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnIngresar_Click(object sender, EventArgs e)
        {
            this.Logear();
        }

        /// <summary>
        /// Permite logearse en la aplicación
        /// </summary>
        protected void Logear()
        {
            string username = this.txtUsuario.Text;
            string password = this.txtPassword.Text;

            string resultado = this.logic.ValidarUsuario(username, password);

            if (resultado == ResultadoLogin.LoginOk)
            {
                Usuario entity = this.logic.ObtenerUsuario(username);
                Globals.UserName = username;
                Globals.NomUsuario = entity.DesNombre + " " + entity.DesApellido;

                MainForm form = new MainForm();
                form.Show();
                this.Hide();
            }
            else
            {               
                MessageBox.Show("Error");
            }
        }

        /// <summary>
        /// Permite recuperar el password del usuario
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnRecuperar_Click(object sender, EventArgs e)
        {
            this.RecuperarPassword();
        }

        /// <summary>
        /// Permite recuperar el password del usuario
        /// </summary>
        protected void RecuperarPassword()
        {
            string email = this.txtEmail.Text;
            string nombre = null;
            string password = null;

            try
            {
                string resultado = this.logic.RecuperarPassword(email, out password, out nombre);
                //this.lblMensaje.Text = Tools.GetMessage(resultado);
                if (resultado == ResultadoRecuperarPwd.RecuperacionOK)
                {
                    MainForm form = new MainForm();
                    form.Show();
                    //string subject = String.Format(CadenaHtml.HtmlRecuperarPassword, nombre, password);
                    //Tools.SendEmail(email, null, TextosPantalla.TxtSubjectRecuperacion, subject);
                    //this.pnlMensaje.CssClass = EstilosPagina.CssMensajeExito;

                    
                }
                else
                {
                    //this.pnlMensaje.CssClass = EstilosPagina.CssMensajeAlert;
                }
            }
            catch (Exception)
            {
                //this.lblMensaje.Text = Tools.GetMessage(ResultadoRecuperarPwd.RecuperacionError);
                //this.pnlMensaje.CssClass = EstilosPagina.CssMensajeError;
            }
        }

        /// <summary>
        /// Permite salir de la aplicación
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        /// <summary>
        /// Evento de carga de la página
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void LoginForm_Load(object sender, EventArgs e)
        {
            this.txtPassword.Focus();
        }
    }
}
